iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0
佛心分享-IT 人自學之術

OpwnCV影像處理新手村系列 第 3

🚀 DAY 3:影像的屬性|尺寸、通道、資料型別一次看懂!

  • 分享至 

  • xImage
  •  

昨天我們學會了如何使用 OpenCV 讀取與顯示圖片,
今天我們要進一步「看懂這張圖片的結構」!

也就是要來認識「影像的屬性」:
✅ 圖片的高度與寬度
✅ 通道數(黑白 vs 彩色)
✅ 每個像素的資料型別
✅ 像素值的存取方式

這些資訊都很基礎,但在做影像處理前務必熟悉!


🖼️ 測試圖片準備

我們先準備一張圖片(如 image.jpg)放在程式同一層資料夾中,並讀取它:

import cv2

img = cv2.imread('image.jpg')

📏 圖片尺寸與通道數(shape 屬性)

使用 .shape 可以快速看到圖片的三個維度:

print(img.shape)

範例輸出:

(300, 400, 3)

這代表什麼意思呢?

項目 說明
300 高度(rows)→ 垂直方向像素數
400 寬度(columns)→ 水平方向像素數
3 通道數(channels)→ 彩色圖有 3 個通道(BGR)

💡 如果是灰階圖(黑白),通道數會變成只有一個喔!

🎨 圖片資料型別(dtype)

每一個像素的數值,其實是儲存在某種「資料型別」中,可以使用 .dtype 來檢查:

print(img.dtype)

常見會顯示:

uint8

這表示每個通道的像素值是 8-bit 整數(0~255),這是 OpenCV 預設的格式。

🔢 圖片像素總數(size)

若想知道整張圖片總共多少個數值(像素 × 通道),可使用 .size:

print(img.size)

範例:

360000

如果是 400 × 300 × 3 通道的彩色圖,總像素值 = 400 × 300 × 3 = 360000

🔍 取出單一像素值(像素讀取)

可以使用 img[y, x] 的方式讀取單一像素的 BGR 值:

pixel = img[200, 300]
print("像素值:", pixel)

範例輸出:

[172 188 195]

代表這個像素是 B=172、G=188、R=195。
用昨天的方式打開圖片放大來看,可以對到這指定的位置,上面標示的BGR顏色就是像素值,如下圖。
https://ithelp.ithome.com.tw/upload/images/20250904/20129482AOAhOQf8PW.png

💡 注意:座標順序是 img[高度, 寬度] = img[y, x]。

📌 今日結語

今天我們學會了如何查看一張圖片的基本資訊,包括:

  • shape:高、寬、通道數
  • dtype:資料型別(通常是 uint8)
  • size:整張圖的像素數量
  • img[y, x]:取單一像素值(BGR)

了解這些屬性,可以幫助你後面更容易進行影像的操作、切割、變形或分析!


上一篇
🚀 DAY 2:OpenCV 基礎操作|讀取與顯示影像
下一篇
🚀 DAY 4:色彩空間轉換|BGR、RGB、HSV 和灰階圖一次搞懂!
系列文
OpwnCV影像處理新手村4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言